﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using SMA.GENTEv1.Dados;

namespace SMA.GENTEv1
{
    public class FrotaLimiteAnoFabricacao
    {
        #region Variaveis Membro
        private int _idLimiteAnoFabricacao;
        private int _anoFabricacao;
        private DataTable _comboAnoFab;
        private GENTEEntities _context;
        #endregion

        #region Parametros
        public int IdLimiteAnoFabricacao
        {
            get { return _idLimiteAnoFabricacao; }
            set { _idLimiteAnoFabricacao = value; }
        }

        public int AnoFabricacao
        {
            get { return _anoFabricacao; }
            set { _anoFabricacao = value; }
        }
        #endregion

        #region Construtores
        public FrotaLimiteAnoFabricacao()
        {
            try
            {
                _context = new GENTEEntities();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public FrotaLimiteAnoFabricacao(int _idanofabricacao, bool _carregaDados)
        {
            try
            {
                _context = new GENTEEntities();
                if (!_carregaDados)
                    this._idLimiteAnoFabricacao = _idanofabricacao;
                else
                    Carregar(_idanofabricacao);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region Métodos Privados
        private void Carregar(int _idanofabricacao)
        {
            try
            {
                var consulta = (from anofabricacao in _context.tab_frota_limite_ano_fabricacao
                                where anofabricacao.id_limite_ano_fabricacao == _idanofabricacao
                                select anofabricacao);

                var listConsulta = consulta.ToList();

                foreach (var list in listConsulta)
                {
                    this._idLimiteAnoFabricacao = list.id_limite_ano_fabricacao;
                    this._anoFabricacao = list.ano_fabricacao;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void EstruturaComboAnoFab()
        {
            try
            {
                DataColumn idlimiteanofabricacao = new DataColumn();
                idlimiteanofabricacao.ColumnName = "IdLimiteAnoFabricacao";
                idlimiteanofabricacao.DataType = Type.GetType("System.Int32");
                _comboAnoFab.Columns.Add(idlimiteanofabricacao);

                DataColumn descricao = new DataColumn();
                descricao.ColumnName = "Descricao";
                descricao.DataType = Type.GetType("System.String");
                _comboAnoFab.Columns.Add(descricao);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion

        #region Métodos Públicos
        public DataTable CarregarComboAnoFabricacao()
        {
            try
            {
                _comboAnoFab = new DataTable();

                EstruturaComboAnoFab();

                var consulta = (from anofabricacao in _context.tab_frota_limite_ano_fabricacao
                                select anofabricacao);

                var listConsulta = consulta.ToList();

                DataRow registro;
                foreach (var list in listConsulta)
                {
                    registro = _comboAnoFab.NewRow();
                    registro["IdLimiteAnoFabricacao"] = list.id_limite_ano_fabricacao.ToString();
                    registro["Descricao"] = string.Concat("Atual ", (list.id_limite_ano_fabricacao != 1) ? list.ano_fabricacao.ToString() : "");
                    if (list.id_limite_ano_fabricacao != 1)
                    {
                        registro["Descricao"] = string.Concat(registro["Descricao"].ToString(), (list.ano_fabricacao == -1) ? " ano" : " anos");
                    }

                    _comboAnoFab.Rows.Add(registro);
                }

                return _comboAnoFab;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion


    }
}
